\chapter{引言}

\section{研究的背景与意义}
由于互联网、AI和量子计算机的出现，全社会对计算机类人才需求量越来越大，计算机的编程教育作为程序编制的基础，成为我国教育的大趋势。\par
在我国，大部分高校都建立了健全的计算机专业人才培养体系，而作为计算机专业核心必修课之一的编程语言课程中，各大学普遍开设了Java编程语言课程。在学习Java 编程语言这门课程时，要求学生不仅要学习基础语言，还要做大量的实验和实践。这些实验代码都需要通过计算机进行代码输入和上交，传统的作业提交方式可能造成学生提交代码效率低，再加上重复繁琐的批改作业工作，造成教师工作量增加，且很容易漏批或者错批\citep{bib01}。为了解决此类问题，有不少综合实力较强、资金充足的院校研发了以在线代码评测系统（Online Judge System\citep{bib02}，以下简称OJ）为教学辅助工具，进行代码评测，如北京大学的POJ\citep{bib03}，浙江大学的ZOJ等。\par
在线代码评测系统是一种通过黑箱测试对代码进行评分的Web平台\citep{bib04}，最早应用于ICPC、NOIP等编程竞赛，用来评估参赛选手的程序\citep{bib05}。在线代码评测系统的基本功能是：用户提交代码，系统把代码编译成目标文件后运行目标文件，对其输入测试数据进行评测，最后将其输出的结果与标准答案进行对比得到成绩，返回评测结果\citep{bib06}。\par
本文结合计算机专业Java语言程序设计课程特点，设计开发了在线代码评测系统。该系统采用Spring Boot和VUE框架前端，数据库技术后端支持，给教师提供了高效便利的代码测试工具，提高教学效率，也给学生提供了高效便利的代码评测平台。\par
\section{国内外研究现状}
自1970年代OJ应用于国际大学生程序设计竞赛以来\citep{bib07}，经过几十年的使用和发展，全球OJ都是用于程序设计正确性和效率的评测。目前OJ被广泛应用在ICPC等竞赛、学生练习以及找工作等场合。\par
\subsection{国外研究现状}
国际上，在线代码评测系统的发展同样迅速，许多知名的在线评测平台为全球编程爱好者提供了练习和竞赛的场所\citep{bib08}。\par
全球有许多知名的在线评测平台，例如Codeforces、LeetCode、HackerRank平台等，在这些平台上可以找到各种题目，并且可以根据题目难度比较灵活地寻找适合自己的题目。\par
国外学者同时也在评测技术上对在线代码评测系统进行优化，提高评测准确性和效率\citep{bib09}，如使用沙箱技术隔离用户代码执行环境，保证系统安全性以及稳定性。\par

\subsection{国内研究现状}
\begin{enumerate}
  \item 高校自己开发的OJ。大部分高校自行开发了适合本校教学和竞赛的OJ\citep{bib10}，如北京大学开发的POJ(Program Online Judge)含3000多道编程题，供学生练习和竞赛\citep{bib11}。\par
  \item 系统结构与安全方面的研究。研究者们改进了OJ系统的性能、安全性。如北京航空航天大学提出一种基于网络的分布式程序自动评测系统结构，采用被动启动机制与木马技术来实现系统中通信和评测安全性的保证\citep{bib12}。\par
  \item 教学辅助功能嵌入。部分工作为了提高教学效果嵌入了教学可视化功能，比如基于后端OJ技术框架———洛阳师范学院在线编程评测及可视化系统采用了前后端分离架构来接收用户提交的代码，并输出评测结果和报表，通过排行榜等形式嵌入可视化模块，展示用户排名，激发学生学习兴趣\citep{bib13}。\par
\end{enumerate}

\section{研究内容}
本文围绕在线代码评测系统的开发需求与实际应用场景，设计并实现了一个基于Spring Boot和Vue框架的前后端分离在线评测平台。研究内容主要包括以下几个方面：首先，从系统需求出发，分析了当前编程教学中存在的问题，明确了系统应具备的功能模块与用户角色。其次，在系统设计方面，采用微服务架构对系统进行模块划分，分别实现用户管理、题库管理、代码管理和代码评测四大核心服务，并设计了与之匹配的数据库结构。再次，重点研究了代码沙箱的设计与实现，采用Docker容器隔离用户代码的运行环境，保障系统安全性。最后，对系统进行了全面的功能、性能与安全性测试，验证了系统的稳定性与可用性。通过上述研究与实现，系统不仅为高校编程教学提供了高效、自动化的代码评测工具，也为在线编程评测系统的建设提供了可行的技术方案与实践经验。\par